package com.class05.f_polymorphic;

public class TestMain {
    public static void main(String[] args) {
        //原生方式
        Dog dog= new Dog();
        dog.eat();//重写的
        dog.lookHome();//特有的
        Cat cat= new Cat();
        cat.eat();//重写的
        cat.catchMouse();//特有的

        System.out.println("-------------------");
//        多态形式new对象
// a.必须有子父类继承或者接口实现关系   当前满足继承关系
// b.必须有方法的重写(没有重写,多态没有意义),多态主要玩儿的是重写方法    当前满足重写eat()方法
//  c.new对象:父类引用指向子类对象
//  语法格式：父类 变量名 = new 子类();

        Animal a = new Dog();//相当于double b = 10
        a.eat();//重写的animal接收的是dog对象，所以会调用dog的eat方法
//        a.lookHome(); 多态前提下，不能调用子类特有的方法
        Animal b  = new Cat();
        b.eat();

    }
}
